﻿using System.Buffers;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Threading;
using System.Threading.Tasks;

namespace WholeSlideImageLibrary.Features
{
    public interface IAssociatedImagesEncodingFeature
    {
        ValueTask<IEnumerable<string>> GetAllAssociatedImagesAsync(CancellationToken cancellationToken = default);
        ValueTask<Size> GetAssociatedImageSizeAsync(string name, CancellationToken cancellationToken = default);
        ValueTask<EncodedImageFileFormat> GetAssociatedImageEncodingSupportAsync(string name, CancellationToken cancellationToken = default);
        ValueTask EncodeAssociatedImageAsync(string name, EncodedImageFileFormat format, Stream stream, CancellationToken cancellationToken = default);
        ValueTask EncodeAssociatedImageAsync(string name, EncodedImageFileFormat format, IBufferWriter<byte> writer, CancellationToken cancellationToken = default);
    }
}
